#!/usr/bin/env python3
"""
Mock数据过滤器测试运行器
基于测试需求设计的mock数据进行过滤器功能测试
"""

import os
import sys
from pathlib import Path

# 添加当前目录到Python路径
current_dir = Path(__file__).parent
sys.path.insert(0, str(current_dir))

from mock_data_manager import MockDataManager

def run_mock_tests():
    """运行mock数据测试"""
    print("=== Mock数据过滤器测试 ===")
    print("运行基于测试需求设计的mock数据测试...")
    
    # 初始化数据管理器
    manager = MockDataManager()
    
    # 检查并准备mock数据
    info = manager.get_mock_data_info()
    if info["exists"]:
        print(f"✅ Mock数据已存在: {info['count']}笔交易")
        print(f"📁 文件大小: {info['file_size_mb']}MB")
        print(f"🕒 修改时间: {info['modified_time']}")
        print("ℹ️ 使用现有数据，无需重新生成")
    else:
        print("🔄 Mock数据不存在，开始生成...")
        if not manager.generate_mock_data():
            print("❌ Mock数据生成失败")
            return False
        print("✅ Mock数据生成完成")
    
    # 检查测试文件是否存在
    test_files = [
        'tests/mock/test_config.py',
        'tests/utils/generate_mock_data.py',
        'tests/utils/data_analysis.json'
    ]
    
    missing_files = []
    for file in test_files:
        if not os.path.exists(file):
            missing_files.append(file)
    
    if missing_files:
        print(f"❌ 缺少必要文件: {', '.join(missing_files)}")
        return False
    
    print("\n=== 文件说明 ===")
    print("📁 tests/mock/test_config.py - 测试配置和预期结果")
    print("📁 tests/mock/mock_trades.json - Mock交易数据（持久化）")
    print("📁 tests/utils/generate_mock_data.py - 数据分析工具")
    print("📁 tests/utils/data_analysis.json - 真实数据分析结果")
    
    print("\n=== Mock数据特点 ===")
    print("🎯 基于测试需求设计，而非完全复制真实数据")
    print("🎯 100笔交易，便于计算和验证")
    print("🎯 固定随机种子(42)，确保结果可重现")
    print("🎯 数据持久化，避免重复生成")
    print("🎯 涵盖所有过滤器测试场景")
    
    print("\n=== 数据分布设计 ===")
    print("品种: MESM25(75%), ESM25(15%), MNQM25(10%)")
    print("方向: Long(55%), Short(45%)")
    print("类型: target(32%), scalp(19%), swing(17%), breakout(16%), mr(13%), other(3%)")
    print("盈亏: 盈利(47%), 亏损(53%)")
    
    print("\n=== 测试用例覆盖 ===")
    print("✅ 基础过滤: 品种、方向、类型、盈亏状态")
    print("✅ 组合过滤: 多条件组合")
    print("✅ 大小写不敏感")
    print("✅ 空结果处理")
    print("✅ 多选项过滤")
    print("✅ 数据完整性验证")
    
    print("\n=== 数据管理 ===")
    print("💾 数据持久化: Mock数据生成后保存在文件中")
    print("🔄 智能检查: 如果数据文件存在，直接使用")
    print("⚡ 快速启动: 避免每次测试都重新生成数据")
    print("🗑️ 手动管理: 可通过参数删除或重新生成数据")
    
    print("\n🎉 Mock数据系统已就绪!")
    print("💡 使用说明:")
    print("   - tests/mock/test_config.py 包含所有测试配置")
    print("   - tests/mock/mock_trades.json 包含持久化的测试数据")
    print("   - tests/utils/generate_mock_data.py 可用于数据分析")
    print("   - tests/utils/data_analysis.json 保存了真实数据的分析结果作为参考")
    
    print("\n🔧 数据管理命令:")
    print("   - python tests/mock/mock_data_manager.py --info     # 查看数据信息")
    print("   - python tests/mock/mock_data_manager.py --force    # 强制重新生成")
    print("   - python tests/mock/mock_data_manager.py --delete   # 删除数据文件")
    
    return True

if __name__ == '__main__':
    success = run_mock_tests()
    sys.exit(0 if success else 1) 